The present invention relates generally to methods for use in disk drives for computer systems. More particularly, the present invention relates to methods for improving disk drive performance by using a seek queue that the command processing code can fill as soon as the next command for processing is determined.
Disk drives are widely used in computer and data processing systems for storing information in digital form. Typically, a disk drive includes at least one disk that spins about a spindle and is driven by a spindle motor. Information is accessed and written to by data transducers. As the disks spin, a cushion of air is created between each disk surface and its corresponding transducer such that the transducer xe2x80x9cfliesxe2x80x9d slightly above the disk surface. This enables an actuator assembly to position the transducers back and forth between concentric tracks defined on each disk surface. Each track typically includes a plurality of data sectors and servo sectors. Servo sectors provide servo information, identifying the location associated with specific data sectors. A xe2x80x9cservo systemxe2x80x9d typically refers to the in-drive system that processes servo information and communicates the location of the transducer to the drive controller.
When a disk drive receives a command from a host system, the actuator assembly must position the transducer to the data sector where the command data is located. This process is referred to as a xe2x80x9cseekxe2x80x9d, which encompasses activities associated with positioning the heads to a predetermined location on the disk drive medium to initiate data recording and data retrieval sequences. A seek is initiated by a xe2x80x9cseek requestxe2x80x9d, which is made by the drive after the preceding seek is completed and the location of a next host command has been determined.
When a disk drive receives multiple commands from a host system, the drive must determine an order for processing the commands that provides maximum performance and highest efficiency. One method used to increase the I/O performance of disk drives is establishing a command queue between the host and the disk drive. Typically, the host maintains enough active commands to keep the queue full. As one command is completed, the host replaces it with another. The drive is then allowed to process the commands and to reorder the commands in the queue in an order that provides maximum performance. By using knowledge of the physical location of information on the drive and the drive""s seek performance, there are known methods that sort the command queue in such a way as to minimize the time spent re-positioning the heads, thus maximizing the number of commands processed in a given time.
However, command queue depths have gotten so deep while the methods of reordering the command queue have become so efficient that the time required for requesting a seek now takes up a significant percentage of command processing time.
Therefore, there exists a need for a method of processing commands that eliminates the excessive overhead required in requesting a new seek.
The present invention satisfies this need.
In accordance with the present invention, a seek request is initiated as soon as a command processing code determines the location of a next command from the command queue. The location of the next command is stored in a position queue in a servo block. Once the previous read or write command has finished and if the next command is sent to the position queue, the servo can initiate the read/write head to move towards that location. Concurrently, the drive processes background functions associated with preparing the drive for read and write operations so that by the time the read/write head arrives at the command location, the background functions will have already been completed, thus eliminating seek request overhead.